package com.freeheart.aop.log;


import java.lang.reflect.Method;
import java.util.function.Supplier;

/**
 * 自定义日志增强的接口，只需实现该接口中的process方法，并定义为Spring Bean，则可实现自定义
 * 日志增强功能
 *
 * @author EmperorHeart
 */
public interface LogInterceptor {
    /**
     * 处理切面的统一方法
     *
     * @param method  切点下的方法
     * @param args    参数数组
     * @param execute 执行切点下这个方法，返回一个Object对象。使用get方法进行调用
     * @return 方法的执行结果
     * @throws Exception 原方法可能抛出的异常
     */
    Object process(Method method, Object[] args, Supplier<Object> execute) throws Exception;

}
